home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / ByteArray.C < prev    next >
C/C++ Source or Header  |  1990-12-06  |  2KB  |  96 lines

  1. //$ByteArray$
  2. #include "ByteArray.h"
  3. #include "String.h"
  4.  
  5. char *cAtPutName= "AtPut";
  6.  
  7. MetaImpl(ByteArray, (TV(cont,cap), T(cap), 0));
  8.  
  9. ByteArray::ByteArray(byte *aStr, int l)                
  10. {
  11.     if (aStr && (l != 0)) {
  12.     if (l < 0)
  13.         l= strlen((char*)aStr)+1;
  14.     cont= new byte[cap= l];
  15.     BCOPY(aStr, cont, l);
  16.     } else
  17.     cont= new byte[cap= 10];
  18. }
  19.  
  20. ByteArray::ByteArray(char *aStr, int l)                
  21. {
  22.     if (aStr && (l != 0)) {
  23.     if (l < 0)
  24.         l= strlen(aStr)+1;
  25.     cont= new byte[cap= l];
  26.     BCOPY((byte*)aStr, cont, l);
  27.     } else
  28.     cont= new byte[cap= 10];
  29. }
  30.  
  31. ByteArray::ByteArray(int size)                
  32. {
  33.     if (size <= 0)
  34.     size= 10;
  35.     cont= new byte[cap= size];
  36. }
  37.  
  38. ByteArray::~ByteArray()               
  39. {
  40.     SafeDelete(cont);
  41. }
  42.  
  43. void ByteArray::operator= (byte *s)
  44. {
  45.     strreplace((char**)&cont, (char*)s);
  46.     cap= strlen((char*)s);
  47. }
  48.  
  49. unsigned long ByteArray::Hash()
  50. {
  51.     register unsigned long hash;
  52.     register byte *p;
  53.  
  54.     for (hash = 0, p = cont; *p; p++)
  55.     hash = (hash << 1) ^ *p;
  56.     return hash;
  57. }
  58.  
  59. bool ByteArray::IsEqual(ObjPtr b)
  60. {
  61.     return b->IsKindOf(ByteArray)
  62.     && strcmp((char*)cont, (char*)Guard(b, ByteArray)->cont) == 0;
  63. }
  64.  
  65. int ByteArray::Compare(ObjPtr b)
  66. {
  67.     return strcmp((char*)cont, (char*)Guard(b, ByteArray)->cont);
  68. }
  69.  
  70. void ByteArray::SetString(byte *s)
  71. {
  72.    SafeDelete(cont);
  73.    cap= strlen((char*)s)+1;
  74.    cont= new byte[cap];
  75.    BCOPY(s, cont, cap);
  76. }
  77.  
  78. ostream& ByteArray::PrintOn(ostream& s)
  79. {
  80.     Object::PrintOn(s);
  81.     return PrintString(s, cont, cap);
  82. }
  83.  
  84. istream& ByteArray::ReadFrom(istream& s)
  85. {
  86.     Object::ReadFrom(s);
  87.     SafeDelete(cont);
  88.     return ReadString(s, &cont, &cap);
  89. }
  90.  
  91. void ByteArray::InspectorId(char *buf, int sz)
  92. {
  93.     strn0cpy(buf, (char*)Str(), sz);
  94. }
  95.  
  96.